package main

import (
	"fmt"
	"time"
)

// 大于10，结束调用自己
func recusive(n int) {
	fmt.Println("recusive", n)
	time.Sleep(time.Second)
	if n > 10 {
		return
	}
	recusive(n + 1)
}

// 传入参数等于1，输出结果
func factor(n int) int {
	if n == 1 {
		return 1
	}
	return factor(n-1) * n
}

// 斐波那契数
func fab(n int) int {
	if n <= 1 {
		return 1
	}

	return fab(n-1) + fab(n-2)
}

func main() {
	// 大于10，结束调用自己
	recusive(10)

	// 传入参数等于1，输出结果
	n := factor(10)
	fmt.Println(n)

	// 斐波那契数
	for i := 0; i < 10; i++ {
		n := fab(i)
		fmt.Println(n)
	}
}
